package version1;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 版本1--封装【拓展】
 * Mysql工具类
 * 1.数据库：地址、用户名、密码  私有属性--静态化【本类直接调用】
 * 2.静态方法【本类直接调用】getParam(String 路径)
 * 3.通过封装概念--链接成功数据【通用一个类链接Mysql和Oracle】
 */
public class Mysql {
  //1.任何数据库具备：地址、用户名、密码---私有静态属性
    private static String url;
    private static String username;
    private static String password;
  //2.静态方法：getParam(String 路径)---链接数据库--读取信息
  //2.1 配置文件：键值对出现，保存数据库对应的基本信息   XXX.properties
  public static void getParam(String fileName) throws IOException {
    //2.2 Properties类--读取XXX.properties配置文件信息
    Properties p=new Properties();
    //2.3 外置文件读取---借助IO---搬运数据---InputStream
    //Mysql.class 表示当前 Mysql类的Class对象
    //理解：图书馆--区域存Mysql相关书籍
    //getClassLoader() 获取当前类的加载器【加载器负责读取配置文件信息】
    //理解：图书馆--区域存Mysql相关书籍----图书管理员
    //getResourceAsStream(文件) 获取当前加载器中键值对信息
    //理解：图书馆--区域存Mysql相关书籍----图书管理员---拿明确的书籍
    InputStream fis=
            Mysql.class.getClassLoader().getResourceAsStream(fileName);
    p.load(fis);
    //2.4 读取数据库基本信息【url、用户、密码】赋值给当前对象【url、用户、密码】
    //Properties类--提供方法 getProperty()读取db_mysql.properties中键
    url=p.getProperty("url");
    username=p.getProperty("username");
    password=p.getProperty("password");
  }

  public static void main(String[] args) throws SQLException, IOException {
    //测试封装概念--链接成功数据库
    Mysql.getParam("db_mysql.properties");
    //参考Mysql封装，写Oracle封装【作业2】
    //练习：链接成功Mysql------book表--增加一条记录操作
    //1.创建链接---Connection  代表Java链接成功数据库
          Connection con=  DriverManager.getConnection(url,username,password);
    //2.执行sql---Statement  代表Java执行数据 sql
    Statement st=con.createStatement();
    //3.【CRUD操作：增删改 executeUpdate() 查 executeQuery() 】
    String sql=
            "insert into book values(6,‘余华’,‘活着’,79,'2010年',80,)";
  }



}















